import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author krystal
 * @date 2022/12/1 17:35
 */
class Student{
    //1、这个类里的属性必须是public或者带有public的getter和setter
    //   否则，jackson无法访问这个对象的属性
    //2、这个类务必要有无参版本的构造方法，如果不写任何构造方法，编译器能自动生成无参构造
    public int studentId;
    public String studentName;
}

@WebServlet("/json")
public class JsonServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //jackson提供的核心的类
        //一个方法为readValue，把json格式的数据转成java对象
        //一个方法为writeValueAsString，把json对象转成json格式的字符串
        ObjectMapper objectMapper=new ObjectMapper();
        //readValue第一个参数可以是字符串，也可以时输入流
        //第二个参数，是一个类对象，也就是要解析出来的结果的对象的类
        Student s=objectMapper.readValue(req.getInputStream(),Student.class);
        System.out.println(s.studentId);
        System.out.println(s.studentName);

//        resp.setContentType("text/html;charset=utf8");
//        resp.getWriter().write(s.studentId+","+s.studentName);
        resp.setContentType("application/json;charset=utf8");
        resp.getWriter().write(objectMapper.writeValueAsString(s));
    }
}
